package com.zrrd.thread._07_wait_notify;

/**
 * @author WanJl
 * @version 1.0
 * @title Cooker
 * @description 生产者
 * @create 2023/10/29 15:32
 */
//继承Thread
public class Cooker extends Thread{
    //1.判断是否有包子,决定当前线程是否执行
    //2.如果有包子,就进入等待状态,如果没有包子,继续执行,生产包子
    //3.生产包子之后,更新桌子上包子状态,唤醒消费者消费包子

    @Override
    public void run() {
        while (true){
            synchronized (Desk.lock){
                //生产的包子数量够了
                if (Desk.count==50){
                    //更新桌子上包子状态为true
                    Desk.flag=true;
                    //唤醒消费者消费包子
                    Desk.lock.notifyAll();
                }
                //桌子上的状态决定到底有没有包子
                if (Desk.flag==false){
                    //生产
                    int number = ++Desk.count;
                    System.out.println("厨师开始生产包子,当前包子数量:"+number);
                }else {
                    try {
                        //如果有包子,就进入等待状态
                        Desk.lock.wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
}
